.. _cmlDiSetLogicMulti:

cmlDiSetLogicMulti 
================================
--------------------------------


SYNOPSYS
`````````````
.. code-block:: none

    VT_I4 cmlDiSetLogicMulti([in] VT_I4 BoardID, [in] VT_I4 Axis, [in] VT_I4 IniChan, 
    [in] VT_I4 NumChan, [in] VT_I4 LogicMask )                  

DESCRIPTION
`````````````  

- cmlDiSetLogicMulti()/cmlDiGetLoticMulti() 함수는 다중(Multi) 디지털 입출력 채널의 논리(Logic) 설정 및 
  설정상태를 반환합니다. 

\

- 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의
  첨두어 cml 가 붙지 않습니다.


PARAMETER
`````````````

▶ BoardID : 사용자가 설정한 디바이스(보드) ID. 
 
▶ Axis: Axis 번호. 축 번호는 3부터 시작합니다. 
 
▶ IniChan : 시작 채널 번호. 통합 채널로 관리되는 채널 번호를 의미하며, 상수 값으로 0 (Zero Based) 이상, 
최대 통합 채널수 - 1 이하의 값을 채널 번호로 설정할 수 있습니다. 
 
▶ NumChan : 시작 채널로부터 몇 개의 채널의 상태를 확인할 것인지에 대한 값을 전달합니다. (최대 
32개 채널까지 설정 가능합니다.) 
 
▶ LogicMask : 이 매개변수를 통하여 다중(Multi) 디지털 I/O 채널의 논리(Logic) 설정 및 설정상태를 
반환합니다. (32비트, BIT0 ~ BIT31)  

.. csv-table::
    :widths: 10 90
    :header-rows: 1
    :stub-columns: 0

    Value, Meaning
    0 (cmlLOGIC_A), A 접점 방식 => 평상시 Open, 감지되면 Close 되는 스위치 방식
    1 (cmlLOGIC_B), B 접점 방식 => 평상시 Close, 감지되면 Open 되는 스위치 방식


RETURN VALUE
`````````````
.. csv-table::
    :widths: 10 90
    :header-rows: 1
    :stub-columns: 0

    Value, Meaning
    음수, 수행 실패
    0(ERR_NONE), 수행 성공


EXAMPLE
```````````````

.. code-block:: c++
 :linenos:
 :emphasize-lines: 5

    C/C++ 
  #include ‚ComiMLink2_SDK.h‛ 
  #include ‚ComiMLink2_SDK_Def.h‛ 
  /* 0~3번 찿널을 디지털 출력 모드로 설정하고 설정된 상태를 확인합니다. */ 
  //BoardID 는 0 으로 가정함 
  #define INI_CH  0 
  #define NUM_CH 4 
  long lGetDioLogicMulti=0;        
  //사용자가 지정한 찿널의 디지털 I/O 논리 상태를 반홖하기 위한 변수. 
  // 0~3 번 찿널의 로직을 B접점으로 설정합니다. 
  if(cmlDiSetLogicMulti (BoardID, 0,  INI_CH, NUM_CH, 0xF ) != ERR_NONE ) 
  { 
  OutputDebugString ( " cmlDiSetLogicMulti function Fail" ); 
  } 
  // 0~3 번 찿널의 설정된 로직 상태를 확인합니다. 
  if(cmlDiGetLoticMulti (BoardID,  0, INI_CH, NUM_CH, &lGetDioLogicMulti ) != ERR_NONE ) 
  { 
  OutputDebugString ( " cmlDiGetLoticMulti function Fail" ); 
  }